#pragma once

//
// TODO:  Remove these from real test suite.
//
#include "../RoomTemplates/RoomTemplates.h"
#include "../RoomTemplates/DefaultConfig.h"

//
// Skeleton class for testing an ActiveObject.
//
class ActiveObjectTestSuite : public Test::Suite
{
public:
	ActiveObjectTestSuite();
	~ActiveObjectTestSuite();

protected:
	virtual void setup();
	virtual void tear_down();

private:
	static const DWORD DWait = 2000; // Default to 2 second wait for anything.

	//
	// Portal message handler methods.
	//
	bool handleSystemPort(CO::SpiFoundation::RoomFW::RoomMessageSP message);
	bool handlePort1(CO::SpiFoundation::RoomFW::RoomMessageSP message);

	//
	// Main test method.
	//
	void Main();

	//
	// Initialization flag and error message because TEST_ASSERT only useful
	//	in test case methods added by TEST_ADD.
	//
	bool initialized_;
	std::string errorMessage_;

	//
	// Test complete flag.
	//
	bool testComplete_;

	//
	// Additional test variables.
	//
	size_t responseCount_;

	//
	// Object to test.
	//
	CO::MyGroupNamespace::MyPackageNamespace::MyActiveInterfaceSP activeObject_;

	//
	// Portals and Messaging.
	//
	CO::SpiFoundation::RoomFW::PortalQueue portalQueue_;
	CO::SpiFoundation::RoomFW::CallbackPortalSP systemManagerPortal_;
	CO::SpiFoundation::RoomFW::CallbackPortalSP activeObjectPortal_;
	CO::SpiFoundation::RoomFW::BindingList bindingList_;
};

